﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;
using JasRibbonApplicatie.Model;

namespace JasRibbonApplicatie.Views
{
    /// <summary>
    /// Interaction logic for MateriaalToevoegen.xaml
    /// </summary>
    /// 

    public partial class MateriaalToevoegen : Page
    {
        String[] Types = new String[] { "Licht", "Geluid", "Spelmateriaal", "Micro's", "Projectoren", "Media", "Fuifmateriaal" };
        private static  MateriaalModel mm = new MateriaalModel();

        public MateriaalToevoegen()
        {
            InitializeComponent();
            FillTypes();
        }

        public void FillTypes()
        {
            for (int i = 0; i < Types.Length; i++)
            {
                typesComboBox.Items.Add(Types[i].ToString());
            }
        }
        private void toevoegButton_Click(object sender, RoutedEventArgs e)
        {
            Materiaaltype toestel = new Materiaaltype();
            if (typesComboBox.Text != "" && naamTextBox.Text != "" &&
                omschrijvingTextBox.Text != "" && korteNaamTextBox.Text != "" &&
                afbeeldingTextBox.Text != "" && dagPrijsTextBox.Text != "")
            {

                /*
                //afbeelding uploaden => put this in threaded task

                string localFilename = afbeeldingTextBox.Text;
                string remoteFilename = (naamTextBox.Text + " " + DateTime.Now.ToString("yy-MM-ddTHH-mm-ss")).Replace(' ', '_') + (new System.IO.FileInfo(localFilename)).Extension;

                #region ftp config
                OpenFTP.FTP f = new OpenFTP.FTP();
                f.Connect(Properties.Settings.Default.FTP_HOSTNAME, Properties.Settings.Default.FTP_USERNAME, Properties.Settings.Default.FTP_PASSWORD);
                f.ChangeDirectory(Properties.Settings.Default.FTP_BASEPATH + "img/toebehoren");
                #endregion
                f.Files.Upload(remoteFilename, localFilename);
                uploadProgressBar.Visibility = Visibility.Visible;
                vooruitgangLabel.Visibility = Visibility.Visible;
                while (!f.Files.UploadComplete)
                {
                    //Totaal aantal Bytes: " +  f.Files.TotalBytes.ToString()
                    vooruitgangLabel.Content = "Uploading: Percent voltooid: " + f.Files.PercentComplete.ToString() + "%";
                    uploadProgressBar.Value = f.Files.PercentComplete;
                }
                vooruitgangLabel.Content = "Upload Voltooid: Percent voltooid: 100%";
                uploadProgressBar.Value = 100;
                f.Disconnect();
                f = null;
                */


                //wegschrijven naar db


                toestel.naam = naamTextBox.Text;
                toestel.omschrijving = omschrijvingTextBox.Text;
                toestel.type = typesComboBox.SelectedItem.ToString();
                toestel.korte_naam = korteNaamTextBox.Text;
                toestel.waarborg = int.Parse(waarborgTextBox.Text);
                toestel.afbeelding = afbeeldingTextBox.Text;
                toestel.waarborgExtraStuks = int.Parse(extraWaarBorgTextBox.Text);
                toestel.dagprijs = int.Parse(dagPrijsTextBox.Text);
                toestel.file = fileTextBox.Text;

                mm.AddToMateriaaltype(toestel);
                mm.OpslaanWijzigingen();

                MessageBox.Show("Database is bijgewerkt", "update", MessageBoxButton.OK);
                var beheermateriaal = Login.Instance.MainWindowReference.currentPage as BeheerMateriaal;
                if (beheermateriaal != null)
                {
                    beheermateriaal.FillNodes();
                }
                HideInfo();
            }
            else
            {
                MessageBox.Show("Gelieve alle velden in te vullen met een *", "opmerking", MessageBoxButton.OK);
            }       

        }

        public void HideInfo()
        {
            extraWaarBorgTextBox.Text = "";
            waarborgTextBox.Text = "";
            afbeeldingTextBox.Text = "";
            fileTextBox.Text = "";
            naamTextBox.Text = "";
            omschrijvingTextBox.Text = "";
            korteNaamTextBox.Text = "";
            dagPrijsTextBox.Text = "";
            weekPrijsLabel.Content = "";
            typesComboBox.SelectedItem = null;
        }

        private void dagPrijsTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            try
            {
                if (dagPrijsTextBox.Text != "")
                    weekPrijsLabel.Content = int.Parse(dagPrijsTextBox.Text) * 4;
                else
                    weekPrijsLabel.Content = "";
            }
            catch (Exception ex)
            {
                Console.WriteLine("MateriaalToevoegen.cs dagPrijsTextBox_TextChanged exeption:" + ex.ToString());
            }
        }

        private void browseButton_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Kies een afbeelding";
            ofd.InitialDirectory = @"C:\";
            ofd.Filter = "Afbeeldingen (*.jpg, *.png)|*.jpg;*.png;";
            ofd.FilterIndex = 2;
            ofd.RestoreDirectory = true;
            Nullable<bool> result = ofd.ShowDialog();
            if (result == true)
            {
                afbeeldingTextBox.Text = ofd.FileName;
            }
        }

        private void geldTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            List<Key> toegelatenToetsenNormal = new List<Key>
            {
                Key.NumPad0, Key.NumPad1, Key.NumPad2, Key.NumPad3,
                Key.NumPad4, Key.NumPad5, Key.NumPad6, Key.NumPad7,
                Key.NumPad8, Key.NumPad9,
                Key.Back, Key.Delete,
                Key.Left, Key.Right, Key.Up, Key.Down,
                
            };
            List<Key> toegelatenToetenWithShift = new List<Key>
            {
                Key.D0, Key.D1, Key.D2, Key.D3, Key.D4, Key.D5, Key.D6,
                Key.D7, Key.D8, Key.D9
            };
            if (!toegelatenToetsenNormal.Contains(e.Key))
            {
                if (!((Keyboard.Modifiers == ModifierKeys.Shift) && (toegelatenToetenWithShift.Contains(e.Key))))
                {
                    e.Handled = true;
                }
            }

        }
    }
}
